<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-type: application/json");

require_once 'vars.php';
require_once 'dbCon.php';
require_once 'fileDelete.php';

//wurde ein item übermittelt
if (isset($_POST['data'])) {
	if ($item = json_decode(stripslashes($_POST['data']), true)) {
		//thumb löschen
		if($item['thumb_delete']) {
			$root = $sitePath.$imageRoot;
			$thumbPath = substr_replace($item['thumb'], $root, 0, 2);
			if (rmdirr($thumbPath)){
				$json['delete_thumb'] = 1;
				$item['thumb'] = '';
				$item['thumb_enable'] = false;
			} else {
				$json['delete_thumb'] = 0;
				$json['error'] = 'Delete thumb file failed!';
			}
		}
		if($item['img_delete']) {
			$root = $sitePath.$imageRoot;
			$imgPath = substr_replace($item['img'], $root, 0, 2);
			if (rmdirr($imgPath)){
				$json['delete_img'] = 1;
				$item['img'] = '';
				$item['img_enable'] = false;
			} else {
				$json['delete_img'] = 0;
				$json['error'] = 'Delete image file failed!';
			}
		}
		
		$pref = $item['prefix'];
		
		//name der tabelle
		$table = '';
		switch ($pref) {
			case 'ctg':
				$table = '`ak_categories`';
				break;
			case 'prj':
				$table = '`ak_projects`';
				break;
			case 'btn':
				$table = '`ak_buttons`';
				break;
		}
		
		//falls das zu speichernde Item ein Positions-Attribut bsitzt
		if (isset($item[position])) {
			//Name der Positions-Spalte
			$col_pos = $pref.'_position';
			$col_id = $pref.'_id';
			$query = 'SELECT `'.$col_pos.'` FROM `'.$db.'`.'.$table
					.' WHERE `'.$pref.'_id` = '.$item[id];
			//die gespeicherte Position abfragen
			if($result = mysql_query($query)) {
				$row = mysql_fetch_array($result);
				$position = $row[0];
				//die neue Position mit der gespeicherten Position vergleichen
				if($position != $item[position]) {
					//Ober- und Untergrenze der zu ändernden Positionen festlegen,
					//die von der Positionsänderung betroffen sind
					$position_bottom = $position < $item[position] ? $position : $item[position]; 
					$position_top = $position > $item[position] ? $position : $item[position];
					//den query entsprechend von "type" erstellen
					switch($pref) {
						//Kategorien laden
						case 'ctg':
							$query = 'SELECT `'.$col_id.'`, `'.$col_pos
									.'` FROM `'.$db.'`.'.$table.' WHERE `'
									.$col_pos.'` >= '.$position_bottom
									.' AND `'.$col_pos.'` <= '.$position_top;
							$json['query'] = $query;
							break;
						//Projekte laden
						case 'prj':
							$query = 'SELECT `'.$col_id.'`, `'.$col_pos
									.'` FROM `'.$db.'`.'.$table.' WHERE `'
									.$col_pos.'` >= '.$position_bottom
									.' AND `'.$col_pos.'` <= '.$position_top
									.' AND `'.$pref.'_category_id` = '.$item[category_id];
							$json['query'] = $query;
							break;
					}
					//neue Position ist größer als die gespeicherte
					if($position < $item[position]) {
						//Ergebnis aufsteigend sortieren
						$query = $query.' ORDER BY `'.$col_pos.'` ASC';
						if($result = mysql_query($query)) {
							$i = 0;
							//alle Positionen (außer der ersten)
							//um eins nach unten verschieben
							//erste Position auf die höchstmögliche setzen,
							//wird durch das speichern auf den neuen korrekten
							//Wert gesetzt
							while($row = mysql_fetch_assoc($result)) {
								if ($i == 0) {
									$query = 'UPDATE `'.$db.'`.'.$table.' SET `'
											.$col_pos.'` = 99'
											.' WHERE `'
											.$col_id.'` = '.$row[$col_id];
								} else {
									$query = 'UPDATE `'.$db.'`.'.$table.' SET `'
											.$col_pos.'` = '.($row[$col_pos]-1)
											.' WHERE `'
											.$col_id.'` = '.$row[$col_id];
								}
								mysql_query($query);
								$i++;
							}
						}
					//neue Position ist kleiner als die gespeicherte
					} else {
						//Ergebnis absteigend sortieren
						$query = $query.' ORDER BY `'.$col_pos.'` DESC';
						if($result = mysql_query($query)) {
							//alle Positionen um eins nach oben verschieben
							while($row = mysql_fetch_assoc($result)) {
								$query = 'UPDATE `'.$db.'`.'.$table.' SET `'
											.$col_pos.'` = '.($row[$col_pos]+1)
											.' WHERE `'
											.$col_id.'` = '.$row[$col_id];
								mysql_query($query);
							}
						}
					}
				}
			}
		}
		
		
		//Information über die Tabellenspalten
		$query = 'SHOW COLUMNS FROM '.$table;
		if($result = mysql_query($query)) {
			//Query erstellen
			$i = 0;
			$query = 'UPDATE `'.$db.'`.'.$table.' SET ';
			while ($row = mysql_fetch_assoc($result)) {
				$db_key = $row['Field'];
				$pos = strpos($db_key,'_')+1;
				$item_key = substr($row['Field'], $pos);
				if($item_key == 'thumb' || $item_key == 'img') {
					// korrekten Bildpfad erstellen und ind den array einfügen
					if ($item[$item_key] != '') {
						$root = array($sitePath, $imageRoot);
						$item[$item_key] = str_replace($root, "", $item[$item_key]);
					}
				}
				if($i == 0) $query = $query.'`'.$db_key.'` = \''
									.mysql_real_escape_string($item[$item_key]).'\'';
				else $query = $query.', `'.$db_key.'` = \''
									.mysql_real_escape_string($item[$item_key]).'\'';
				$i++;
			}
			$query = $query.' WHERE '.$table.'.`'.$pref.'_id` = '.$item['id']
							.' LIMIT 1';
			
			$json['query'] = $query;
			
			//query ausführen
			if($result = mysql_query($query)) {
				$json['id'] = $item['id'];
				$json['result'] = 1;
			} else {
				$json['error'] = 'save to database failed: '.mysql_error();
				$json['result'] = 0;
			}
		} else {
			$json['result'] = 0;
			$json['error'] = 'Get Column Info failed: '.mysql_error();
		}
	} else {
		$json = array('result' => 0, 'error' => 'decode json failed');
	}
} else {
	$json = array('result' => 0, 'error' => 'parameter missing: data = "'
											.$_POST['data'].'"');
}
// Datenbankverbindung schließen
mysql_close($conn);
$encoded = json_encode($json);
echo $encoded;
unset($encoded);
?>